package model

// Role 角色模型
// @Description 用户角色信息，包含角色ID、名称、权限等信息
type Role struct {
	Model
	// 角色名称，如admin、user等
	Name string `json:"name" form:"name" gorm:"size:50;comment:角色名称" binding:"required" example:"admin"`
	// 角色编码，唯一标识
	Code string `json:"code" form:"code" gorm:"size:50;comment:角色编码" binding:"required" example:"ROLE_ADMIN"`
	// 角色描述信息
	Description string `json:"description" form:"description" gorm:"size:255;comment:角色描述" example:"系统管理员角色"`
	// 角色状态（0正常 1停用）
	Status int8 `json:"status" form:"status" gorm:"default:0;comment:角色状态(0正常 1停用)" example:"0"`
	// 角色排序
	Sort int32 `json:"sort" form:"sort" gorm:"default:0;comment:角色排序" example:"1"`
	// 数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）
	DataScope int8 `json:"dataScope" form:"dataScope" gorm:"default:1;comment:数据范围(1全部 2自定义 3本部门 4本部门及以下)" example:"1"`
	// 角色菜单权限（存储菜单ID列表的JSON字符串）
	MenuPermissions string `json:"menuPermissions" form:"menuPermissions" gorm:"type:text;comment:菜单权限" example:"[1,2,3]"`
}

// RoleMenu 角色菜单关联模型
// @Description 角色和菜单的多对多关联
type RoleMenu struct {
	Model
	// 角色ID
	RoleId int `json:"roleId" gorm:"index;comment:角色ID" example:"1"`
	// 菜单ID
	MenuId int `json:"menuId" gorm:"index;comment:菜单ID" example:"1"`
}

func (Role) TableName() string {
	return "sys_role"
}

func (RoleMenu) TableName() string {
	return "sys_role_menu"
}
